package com.aizuda.boot.modules.business.contract.entity.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "合同类型修改DTO")
public class ContractTypeUpdateDTO {

    @Schema(description = "合同类型ID", required = true)
    private Integer id;

    @Schema(description = "父级合同类型ID，用于表示一级和二级三级关系，NULL表示一级")
    private Integer parentId;

    @Schema(description = "合同类型名称", required = true)
    private String typeName;

    @Schema(description = "合同类型缩写", required = true)
    private String typeAbbreviation;

    @Schema(description = "合同类型说明")
    private String typeDescription;

    @Schema(description = "适用部门")
    private List<Long> applicableDepartments;

    @Schema(description = "适用类型",examples = {"user", "department"}, required = true)
    private String applicableType;

    @Schema(description = "适用用户")
    private List<Long> applicableUsers;

    @Schema(description = "是否启用该合同类型")
    private Boolean isEnabled;

    @Schema(description = "申请合同时是否可新增「对方」")
    private Boolean allowAddCounterparty;

    @Schema(description = "可用于创建（上传合同文件）")
    private Boolean canCreateUpload;

    @Schema(description = "可用于创建（使用合同模版）")
    private Boolean canCreateTemplate;

    @Schema(description = "可用于变更（补充协议）")
    private Boolean canChangeSupplement;

    @Schema(description = "可用于变更（修改表单）")
    private Boolean canChangeModifyForm;

    @Schema(description = "可用于终止（合同终止）")
    private Boolean canTerminateTermination;

    @Schema(description = "可用于终止（合同到期）")
    private Boolean canTerminateExpiry;

    @Schema(description = "可用于终止（作废）")
    private Boolean canTerminateVoid;
} 